package com.zmn.oms.model.bo.orderamount;

import com.zmn.oms.model.entity.discount.OrderDiscount;
import com.zmn.oms.model.entity.discount.OrderPayDiscount;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import javax.validation.constraints.NotNull;
import java.util.List;

/**
 * 类描述：下单计算优惠
 * @author heciqi
 * @date 2020-06-03 14:08:02
 */
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class ReCalcOrderAmountDIO {

    /**
     * 修改的订单原价
     */
    private Integer newOriginalAmount;

    /**
     * 人工优惠（后台优惠，工程师优惠）触发时，输入的优惠金额
     * 人工优惠金额
     */
    private Integer newArtificialDiscountAmount;

    /**
     * 修改的定金金额
     */
    private Integer newDepositAmount;

    /**
     * 修改的渠道预收
     */
    private Integer newChannelPrepayAmount;

    /**
     * 渠道二次支付金额
     */
    private Integer newChannelSecondPayAmount;

    /**
     * 只收上门费标志（1：否，2：是）
     */
    private Integer onlyVisit;

    /**
     * 验券时触发，输入的优惠券码
     * 优惠券码
     */
    private String couponCode;


    /**
     * 工程师优惠ID
     */
    private Integer masterDiscountId;

    /**
     * 第三方券平台
     * @see com.zmn.dms.common.enums.coup.ThirdPlatEnum
     */
    @NotNull
    private Integer thirdType;

    /**
     * 调用发起者，1系统，2用户输入，3 运营后台输入
     */
    private Integer invoker;

    /**
     * 订单金额项
     */
    private OrderAmountDIO orderAmountDIO;

    /**
     * 优惠的条件参数（城市，渠道等）
     */
    private DiscountConditionParamsDIO discountConditionParamsDIO;

    /**
     * 优惠的优惠列表
     */
    private List<OrderDiscount> orderDiscountList;

    /**
     * 次卡code
     */
    private String onceCardcouponCode;

    /**
     * 品牌ID
     */
    private Integer brandId;

    /**
     * 一口价标识 ：1 非， 2 是
     */
    private Integer finalPrice;

    /**
     * 优惠的优惠列表
     */
    private List<OrderPayDiscount> orderPayDiscountList;

    /**
     * 外呼电话
     */
    private String calledNumber;

    /**
     * 外部店铺id
     */
    private String externalShopId;
}
